package com.sc.nft.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sc.nft.entity.UserInfo;
import com.sc.nft.entity.dto.draw.activity.MallDrawActivityRecordDTO;
import com.sc.nft.entity.vo.draw.MallDrawActivityVO;
import com.sc.nft.entity.vo.draw.MallDrawPrizeNoticeVO;
import com.sc.nft.entity.vo.draw.MallDrawPrizePoolVO;
import com.sc.nft.entity.vo.draw.MallDrawPrizeResultVO;
import com.sc.nft.entity.vo.draw.MallUserDrawRecodVO;
import com.sc.nft.entity.vo.draw.MallUserDrawRecordDetailVO;
import com.sc.nft.entity.vo.draw.MallUserPrizeVO;
import com.sc.nft.entity.vo.draw.activity.MallDrawActivityRecordVO;
import com.sc.nft.sup.PageRequest;

import java.util.List;

public interface MallDrawRecordService {

    IPage<MallDrawActivityRecordVO> adminListUserPrizeRecord(MallDrawActivityRecordDTO mallDrawActivityRecordDTO);

    IPage<MallUserDrawRecodVO> listUserPrizeRecord(Long userId, PageRequest pageRequest);

    IPage<MallDrawActivityVO> listDrawActivity(PageRequest pageRequest);

    MallDrawPrizeResultVO drawPrize(UserInfo userInfo, Long prizePoolId, Long activityId);

    boolean acceptPrize(Long userId, Long activityId);

    MallUserPrizeVO getUserPrizePool(Long userId, Long activityId);

    MallDrawActivityVO getDrawActivity(Long userId, Long activityId);

    MallDrawPrizePoolVO getPrizePool(Long userId, Long prizePoolId, Long activityId);

    List<MallUserDrawRecordDetailVO> getUserDrawRecordDetail(Long id);

    List<MallUserDrawRecordDetailVO> getUserDrawRecordDetail(Long userId, Long activityId, Long drawId);

    List<MallDrawPrizeNoticeVO> getDrawNotice(Long id);

}
